
#ifndef __dotxsiH__
#define __dotxsiH__

#include "3d_material.h"
#include <SemanticLayer.h>

namespace WtfGraphics {
	class XsiMesh: public Mesh {
	public:
		XsiMesh(const WtfEngine::StringPool::Entry& sName);

		void ParseXsi(CSLMesh * pMesh);
	};

	/**
	 * Loads static 3D models from dotXSI files
	 **/
	class XsiModel: public Model {
		Transformation3D mTransform;

	public:
		XsiModel(const WtfEngine::StringPool::Entry& sName);

		void Read(CSLScene * pScene);
		void ParseXsi(CSLModel * pModel);

		void render();

	public:
		static WtfEngine::IDataObject * Load(const WtfEngine::StringPool::Entry& sName);
		DATA_LOADABLE(XsiModel, GC_ADDEDSIZE_AUTO(Model, XsiModel));
	};

	class XsiPhongMaterial: public Material {
	public:
		XsiPhongMaterial(const WtfEngine::StringPool::Entry& sName);

		void ParseXsi(CSLXSIShader * pMat);

		//static WtfEngine::IDataObject * Load(const WtfEngine::StringPool::Entry& sName);
		DATA_LOADABLE(XsiPhongMaterial, GC_ADDEDSIZE_AUTO(Material, XsiPhongMaterial));
	};
};

#endif
